--- a/src/msgmerge.c
+++ b/src/msgmerge.c
@@ -158,8 +158,6 @@ int main(int argc, char**argv) {
 				} else if(streq(A+2, "update")) {
 					set_update:
 					update = 1;
-					fprintf(stdout, "error: update functionality unimplemented\n");
-					exit(update);
 				} else if(streq(A+2, "help")) syntax();
 
 			} else if(streq(A + 1, "o")) {
@@ -192,20 +190,27 @@ int main(int argc, char**argv) {
 				exit(1);
 			} else if (streq(A+1, "h")) syntax();
 		} else if(expect_fn.out) {
+			if(update && streq(A, "/dev/null")) return 0;
 			set_file(1, A, &files.out);
 			expect_fn.out = 0;
 		} else if(expect_fn.compend) {
 			set_file(1, A, &files.compend);
 			expect_fn.compend = 0;
 		} else if(expect_fn.po) {
+			if(update && streq(A, "/dev/null")) return 0;
 			set_file(0, A, &files.po);
 			expect_fn.po = 0;
 			expect_fn.pot = 1;
 		} else if(expect_fn.pot) {
+			if(update && streq(A, "/dev/null")) return 0;
 			set_file(0, A, &files.pot);
 			expect_fn.pot = 0;
 		}
 	}
+	if(update) {
+		fprintf(stdout, "error: update functionality unimplemented\n");
+		exit(update);
+	}
 	if(!files.out || !files.po || !files.pot) syntax();
 	int ret = process(&files, update, backup);
 	FILE** filearr = (FILE**) &files;
-- 
1.8.4

